

#include <iostream>
#include <string>
#include <vector>

//泛型类的成员 不是 通用引用

template <typename T>
void insert(T &coll, typename T::value_type &&arg)
{
  coll.push_back(arg);
}

int main()
{
  std::vector<std::string> coll;
  //...
  insert(coll, std::string{"prvalue"}); // OK
  //...
  std::string str{"lvalue"};
  insert(coll, str);            // ERROR: T::value_type&& is not a universal reference
  insert(coll, std::move(str)); // OK
  //...
}
